import asyncio  # 导入asyncio模块，用于编写异步代码
import random
import time
async def fetch_data_from_website(site):  # 定义一个异步函数，模拟从网站获取数据
    print(f"开始从 {site} 获取数据...")  # 打印开始获取数据的消息
    await asyncio.sleep(random.randint(1, 3))  # 模拟网络请求的延迟，使用随机时间
    print(f"从 {site} 获取数据完成。")  # 打印数据获取完成的消息
    return {site: f"数据来自 {site}"}  # 返回一个包含网站名称和数据的结果字典

async def aggregate_data(sites):  # 定义一个异步函数，用于聚合来自多个网站的数据
    # 使用asyncio.gather并发运行多个协程，并等待它们全部完成
    results = await asyncio.gather(*(fetch_data_from_website(site) for site in sites))
    # 将所有结果合并到一个字典中
    aggregated_data = {site: data for result in results for site, data in result.items()}
    return aggregated_data  # 返回聚合后的数据

async def main():  # 定义主函数，作为程序的入口
    sites = ['site1.com', 'site2.com', 'site3.com']  # 定义一个网站列表
    aggregated_data = await aggregate_data(sites)  # 调用aggregate_data协程并等待其完成
    print(f"聚合后的数据：{aggregated_data}")  # 打印聚合后的数据

# 运行主函数
time1 = time.time()
asyncio.run(main())
print(time.time()-time1)

# 列表推导式  写 100   [0,1,2,3,4.....]

#100个数字  同时+1 出结果